package com.atmosphere.interfaces.component;

import com.atmosphere.interfaces.IComponent;
import com.jme.math.Vector3f;

/**
 * <code>IAbstractAstronomy</code> defines the interface of the
 * basic abstraction of a component unit that involves astronomy
 * motion meaning a body rotates around a given axis at a given
 * rate.
 *
 * @author Yi Wang (Neakor)
 * @version Creation date: 05-20-2009 18:27 EST
 * @version Modified date: 05-20-2009 18:29 EST
 */
public interface IAbstractAstronomy extends IComponent {

	/**
	 * Set the astronomy position that defines the rotation radius.
	 * @param position The <code>Vector3f</code> position.
	 */
	public void setPosition(Vector3f position);

	/**
	 * Set the length of one complete astronomy rotation cycle.
	 * @param length The <code>Float</code> length in seconds.
	 */
	public void setCycleLength(float length);
	
	/**
	 * Set the rotation axis.
	 * @param axis The <code>Vector3f</code> axis.
	 */
	public void setRotationAxis(Vector3f axis);
	
	/**
	 * Retrieve the astronomy position.
	 * @return The <code>Vector3f</code> position.
	 */
	public Vector3f getPosition();
	
	/**
	 * Retrieve the length of one complete rotation cycle.
	 * @return The <code>Float</code> length in seconds.
	 */
	public float getCycleLength();
	
	/**
	 * Retrieve the rotation axis.
	 * @return The <code>Vector3f</code> axis.
	 */
	public Vector3f getRotationAxis();
}
